package com.ruoyi.framework.datasource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 数据源切换处理
 *
 * @author ruoyi
 */
public class DynamicDataSourceContextHolder {
  public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);

  /** 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本， 所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。 */
  private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();

  /** 设置数据源的变量 */
  public static void setDataSourceType(String dsType) {
    log.info("切换到{}数据源", dsType);
    CONTEXT_HOLDER.set(dsType);
  }

  /** 获得数据源的变量 */
  public static String getDataSourceType() {
    return CONTEXT_HOLDER.get();
  }

  /** 清空数据源变量 */
  public static void clearDataSourceType() {
    CONTEXT_HOLDER.remove();
  }
}
